#ifndef TRIE_H_INCLUDED
#define TRIE_H_INCLUDED
//para representar un conjunto de strings
#define NO 0
#define YES 1

#define TAM 36 //numeros + letras minusculas

/*definicion de estructuras*/
struct NodoTrie;
struct InfoTrie;

typedef struct InfoTrie {
	int def;
	struct NodoTrie* hijo;
} InfoTrie;

typedef struct NodoTrie {
	InfoTrie arr[TAM];
} NodoTrie;

typedef struct Trie {
	NodoTrie* raiz;
} Trie;

/*funciones para utilizar*/
Trie* new_Trie();
void delete_Trie(Trie* trie);
void insert_in_Trie(Trie* trie, char* str); 
int belongs_to_Trie(Trie* trie, char* str); //devuelve YES o NO
//'str' solo puede contener numeros y letras minusculas ([0-9a-z])

/*funciones auxiliares*/
NodoTrie* new_NodoTrie();
void delete_NodoTrie(NodoTrie* nodo);
char pos_in_arr(char c);

#endif // TRIE_H_INCLUDED
